import toTree from "../utils/totree"
let modules=import.meta.glob("../pages/home/**/*.vue")
let syncComponents=import.meta.globEager("../pages/home/**/*.vue")
// console.log(modules)

// 目的:读取到的modules转变成route配置
// 一个router的配饰:{path:"xx",component:"xx"}


// 约定式路由
// 1.约定所有的页面都必须写在pages/home这个文件下面
// 2.所有的页面必须使用文件夹+index.vue这种编写方式
// 声明一个扁平的路由配置数值
let flatRoutes=[]
// 遍历modules
for(let path in modules){
    // console.log(path)
    let component =modules[path]
    let syncCom=syncComponents[path].default
    // console.log(syncCom)
    // 一般来说是这个/^\.{2}\/pages\/home\/(.+)\/index\.vue$，这里容器写错了在components才下面这样写/
    let reg=/^\.{2}\/pages\/home\/(.+)\/index\.vue$/
    // 排除掉匹配到null的这一次，../components/pages/home.lastIndex.vue
    let match=path.match(reg)
    if(match){
        // 创建一个路由对象
        let route={
            path:match[1],
            component,
            meta:syncCom['meta']??{}
        }
        flatRoutes.push(route)

    }
}


// 因为扁平转树形还要有id和pid，给每个对象加上
flatRoutes.forEach(route=>{
    let pathArr=route.path.split("/")
    if(pathArr.length===1){
        route.id=pathArr.join("")
    }else{
        let newPathArr=[...pathArr]
        route.id=newPathArr.join("-")
        let path=newPathArr.pop()
        route.pid=newPathArr.join("-")
        route.path=path
    }
})
// 扁平转树形
let routes=toTree(flatRoutes,'id','pid')
export default routes